﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Documents;
//using System.Windows.

namespace WF_Office_Verwaltung
{
    class dbCon_klasse
    {
        nachrichten_klasse nk = new nachrichten_klasse();


        /// <summary>
        /// liest die Tabelle bermerkung aus und gibt das Result-Set als string zurück
        /// </summary>
        /// <param name="akt_Kunde">Kundenobjekt von welchen man die bemerkungen auslesen will</param>
        /// <returns></returns>
        internal string get_bemerkung(Kunde akt_Kunde)
        {
            string s_bemerkung = "";
            try
            {
                using (var context = new project_entities())
                {
                    int id_kunde = akt_Kunde.ID_Kunde;
                    var bemerkung = (from b in context.Bemerkung
                                     where b.FK_Kunde == id_kunde
                                     select b).ToList();

                    if (bemerkung.Count != 0)
                    {
                        s_bemerkung = bemerkung[0].Bemerkung1;
                        return s_bemerkung;
                    }
                    return s_bemerkung;
                }
            }
            catch (Exception ex)
            {
                nk.ErrorMessage("dbCon_klasse \n get_bemerkung \n\n", ex);
                throw;
            }
        }
        /// <summary>
        /// Bemerkungen werden hier in die Tabelle geschrieben (update wenn schon eine Bemerkung vorhanden, insert wenn noch keine bemerkung vorhanden)
        /// </summary>
        /// <param name="s_Bemerkung">Der Text welcher in die DB geschrieben werden soll als string(max 2000)</param>
        /// <param name="akt_Kunde">Kundenobjekt von welchen man die bemerkungen auslesen will</param>
        internal void save_bemerkung(string s_Bemerkung, Kunde akt_Kunde)
        {
            try
            {
                using (var context = new project_entities())
                {
                    int id_kunde = akt_Kunde.ID_Kunde;
                    var q_bemerkung = (from b in context.Bemerkung
                                       where b.FK_Kunde == id_kunde
                                       select b).ToList();
                    if (id_kunde != 0)
                    {
                        if (q_bemerkung.Count != 0)
                        {
                            context.sp_update_Bemerkung(akt_Kunde.ID_Kunde, q_bemerkung[0].ID_Bemerkung, s_Bemerkung);
                        }
                        else
                        {
                            context.sp_insert_Bemerkung(akt_Kunde.ID_Kunde, s_Bemerkung);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                nk.ErrorMessage("dbCon_klasse \n save_bemerkung \n\n", ex);
            }
        }

        internal object get_Kunde_as_List()
        {
            try
            {
                using (var context = new project_entities())
                {
                    var Kunde = (from k in context.Kunden
                                 select k).ToList<Kunde>();
                    return Kunde;
                }
            }
            catch (Exception ex)
            {
                nk.ErrorMessage("dbCon_klasse \n get_Kunde_as_List \n\n", ex);
                throw;
            }
        }

        internal DateTime get_letzten_Wartungsvertrag_List(int akt_kunde)
        {
            try
            {
                using (var context = new project_entities())
                {
                    var letze_wartung = context.sp_get_letzter_Wartungsvertrag(akt_kunde).ToList();
                    DateTime dtLetzteWartung = DateTime.Parse("01.01.1000");
                    int j = 0;
                    for (int i = 0; i < letze_wartung.Count; i++)
                    {
                       
                        if (!letze_wartung[i].Gelöscht && j == 0)
                        {
                            dtLetzteWartung = letze_wartung[i].letzte_wartung;
                            j++;
                        }
                    }
                    return dtLetzteWartung;
                }
            }
            catch (Exception ex)
            {
                nk.ErrorMessage("dbCon_klasse \n get_Kunde_as_List \n\n", ex);
                throw;
            }


        }
    }
}
